package praca.impl;

import android.util.Log;
import praca.framework.TextureGL;
import praca.framework.Vector;
import praca.framework.Vertices;
import praca.interfejsy.Game;
import praca.interfejsy.Screen;
import praca.interfejsy.Texture;
import praca.interfejsy.TouchEvent;

//----------SPADAJACY KLOCEK-------------//
public class GameScreen extends Screen{

	
	Vertices brickVert = new Vertices(60, 48, true); // w poziomie 60*12=720 i zostaje 80 pikseli na pingwina,  klockow w pionie 10
	Vector gravity = new Vector(0,-400);
	Vector brickPos = new Vector(240,450);
	Texture brick;
	TouchEvent ev;
	boolean isTouched = false;
	final int NR_BRICKS = 8;
	Brick[] bricks;
	
	public GameScreen(Game game) {
		super(game);
		bricks = new Brick[NR_BRICKS];
		for(int i = 0; i < NR_BRICKS; i++) {
			bricks[i] = new Brick(60,48,0,i,1);
		}
		
	}

	@Override
	public void update(float deltaTime) {
		
		
		
		if(!in.getTouchEvents().isEmpty()){

			ev = in.getTouchEvents().remove(0);
				
			if(ev.getType() == TouchEvent.TOUCH_DOWN){
				if(czyDotknieto(ev.getX(), ev.getY(), 100, 100, brickPos.x, brickPos.y)){
					//funkcja sprawdzajaca czy dotyk znajduje sie wewnatrz trolla
					isTouched = true;
				}
			}
			
			/*if(ev.getType() == TouchEvent.TOUCH_MOVE){//przenoszenie
				if(isTouched){//jak jest dotkniety to go przenosimy razem z dotykiem
					trollX = ev.getX();
					trollY = ev.getY();
				}
			}
			
			if(ev.getType() == TouchEvent.TOUCH_UP){//przenoszenie
				if(isTouched){//jak jest dotkniety to go przenosimy razem z dotykiem
					trollX = ev.getX();
					trollY = ev.getY();
					isTouched=false;
				}
			}*/
			
		}
		
		g.drawColor(0, 1, 0.4f); //rysujemy zielone tlo
		
		
		g.clearTransformations(); //rysujemy co innego wiec czyscimy przeniesienie
		if(brickPos.y<=0+24){
			System.out.println("jest zero");
			brickPos.y=0+24;
		}
		else{
			brickPos.add(gravity.x * deltaTime, gravity.y * deltaTime);
		}
			
		Log.d("brickpos", "brickPos.x: "+brickPos.x +" brickPos.y: "+brickPos.y );
		g.moveTexture(brickPos.x, brickPos.y);
		
		
		//g.rotateTexture(90);
		/*
		 * move i rotate sa wykonywane w odwrotnej kolejnosci wywolania, co oznacza,
		 * ze najpierw obrazek zostanie obrocony o 90 stopni a potem przeniesiony na 25,150
		 * ZAWSZE nalezy to robic w tej kolejnosci
		 */
		if(!isTouched)
		g.drawTexture(brick, brickVert);
		
		
	}

	@Override
	public void pause() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void resume() {
		/*
		 * Tekstury nalezy wczytywac w metodzie resume poniewaz po kazdym zablokowaniu telefonu
		 * itp zostaja one wyrzucone z pamieci
		 * korzystamy z obiektu TextureGL
		 */
		brick = new TextureGL(game, "brick1.png" );
		//troll = new TextureGL(game, "troll.png" );//nazwa pliku graficznego w katalogu ASSETS
		g.setTextureTransparentBackground(); //tlo KAZDEJ tekstury bedzie prezroczyste
		
	}

	@Override
	public void dispose() {
		// TODO Auto-generated method stub
		
	}
	
	public boolean czyDotknieto(float x, float y, int width, int height, float textureX, float textureY ){
		/*
		 * Prosta matematyka. Punkt polozenia to srodek obrazka
		 * ma on 100 szerokosci i 100 wysokosci
		 */
		Log.d("velocity", "Test: x="+x+" ,y="+y);//Uzycie LogCat!!
		
		if(x < textureX+width && x > textureX-width && y > textureY-height && y < textureY+height)
			return true;
		
		return false;
	}
	
	//findAndRemoveNeighbours(Brick brick, ArrayList<Brick> wall){
		
		
	

}
